home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Peter Lewis / PNL Libraries / Assembly / TranslateISO.a < prev    next >
Encoding:
Text File  |  1994-10-17  |  4.3 KB  |  182 lines  |  [TEXT/MPS ]

  1.     macro
  2.     PUSH
  3.     move.l    &SYSLIST[1],-(sp)
  4.     endm
  5.         
  6.     macro
  7.     POP
  8.     move.l    (sp)+,&SYSLIST[1]
  9.     endm
  10.  
  11. isotomactable    proc    export
  12.     dc.b    $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  13.     dc.b    $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
  14.     dc.b    $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F
  15.     dc.b    $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F
  16.     dc.b    $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F
  17.     dc.b    $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$5C,$5D,$5E,$5F
  18.     dc.b    $60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F
  19.     dc.b    $70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$7B,$7C,$7D,$7E,$7F
  20.     dc.b    $A5,$AA,$AD,$B0,$B3,$B7,$BA,$BD,$C3,$C5,$C9,$D1,$D4,$D9,$DA,$B6
  21.     dc.b    $C6,$CE,$E2,$E3,$E4,$F0,$F6,$F7,$F9,$FA,$FB,$FD,$FE,$FF,$F5,$C4
  22.     dc.b    $CA,$C1,$A2,$A3,$DB,$B4,$CF,$A4,$AC,$A9,$BB,$C7,$C2,$D0,$A8,$F8
  23.     dc.b    $A1,$B1,$D3,$D2,$AB,$B5,$A6,$E1,$FC,$D5,$BC,$C8,$B9,$B8,$B2,$C0
  24.     dc.b    $CB,$E7,$E5,$CC,$80,$81,$AE,$82,$E9,$83,$E6,$E8,$ED,$EA,$EB,$EC
  25.     dc.b    $DC,$84,$F1,$EE,$EF,$CD,$85,$D7,$AF,$F4,$F2,$F3,$86,$A0,$DE,$A7
  26.     dc.b    $88,$87,$89,$8B,$8A,$8C,$BE,$8D,$8F,$8E,$90,$91,$93,$92,$94,$95
  27.     dc.b    $DD,$96,$98,$97,$99,$9B,$9A,$D6,$BF,$9D,$9C,$9E,$9F,$E0,$DF,$D8
  28.     endp
  29.     
  30. mactoisotable    proc    export
  31.     dc.b    $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  32.     dc.b    $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
  33.     dc.b    $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F
  34.     dc.b    $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F
  35.     dc.b    $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F
  36.     dc.b    $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$5C,$5D,$5E,$5F
  37.     dc.b    $60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F
  38.     dc.b    $70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$7B,$7C,$7D,$7E,$7F
  39.     dc.b    $C4,$C5,$C7,$C9,$D1,$D6,$DC,$E1,$E0,$E2,$E4,$E3,$E5,$E7,$E9,$E8
  40.     dc.b    $EA,$EB,$ED,$EC,$EE,$EF,$F1,$F3,$F2,$F4,$F6,$F5,$FA,$F9,$FB,$FC
  41.     dc.b    $DD,$B0,$A2,$A3,$A7,$80,$B6,$DF,$AE,$A9,$81,$B4,$A8,$82,$C6,$D8
  42.     dc.b    $83,$B1,$BE,$84,$A5,$B5,$8F,$85,$BD,$BC,$86,$AA,$BA,$87,$E6,$F8
  43.     dc.b    $BF,$A1,$AC,$88,$9F,$89,$90,$AB,$BB,$8A,$A0,$C0,$C3,$D5,$91,$A6
  44.     dc.b    $AD,$8B,$B3,$B2,$8C,$B9,$F7,$D7,$FF,$8D,$8E,$A4,$D0,$F0,$DE,$FE
  45.     dc.b    $FD,$B7,$92,$93,$94,$C2,$CA,$C1,$CB,$C8,$CD,$CE,$CF,$CC,$D3,$D4
  46.     dc.b    $95,$D2,$DA,$DB,$D9,$9E,$96,$97,$AF,$98,$99,$9A,$B8,$9B,$9C,$9D
  47.     endp
  48.  
  49. NetToMacStack    record    0
  50. a2    ds.l    1
  51. pc    ds.l    1
  52. len    ds.l    1
  53. p    ds.l    1
  54. return    ds.l    1
  55.     endr
  56.  
  57. ; function NetToMac(p:ptr; len:longInt):longInt;
  58. NetToMac    proc    export
  59.     with    NetToMacStack
  60.  
  61. ; a0 = src ptr
  62. ; a1 = dest ptr
  63. ; a2 = isotomactable
  64. ; d0 = src len
  65. ; d1 = dest len
  66. ; d2 = the byte
  67.  
  68.     move.l    a2,-(sp)
  69.     move.l    len(sp),d0
  70.     clr.l    d1
  71.     move.l    p(sp),a0
  72.     move.l    a0,a1
  73.     lea    isotomactable,a2
  74.     clr.w    d2
  75. loop
  76.     sub.l    #1,d0
  77.     bmi.s    fin
  78.     move.b    (a0)+,d2
  79.     cmp.b    #10,d2
  80.     beq.s    gotlf        ; a lone lf, so convert to a cr
  81.     cmp.b    #13,d2
  82.     bne.s    continue
  83.     tst.l    d0
  84.     beq.s    continue    ; no characters left, just end with a cr
  85.     cmp.b    #10,(a0)
  86.     bne.s    continue    ; just a cr
  87.     addq.l    #1,a0
  88.     sub.l    #1,d0
  89. gotlf
  90.     move.b    #13,d2
  91. continue
  92.     move.b    (a2,d2.w),d2
  93.     move.b    d2,(a1)+
  94.     addq.l    #1,d1
  95.     bra.s    loop
  96. fin
  97.     move.l    d1,return(sp)
  98.     move.l    (sp)+,a2
  99.     move.l    (sp),8(sp)
  100.     add.l    #8,sp
  101.     rts
  102.  
  103.     STRING    ASIS                ; The debugger string.
  104.     DC.B    $88,'NetToMac'
  105.     DC.W    $0000
  106.  
  107.     endp
  108.     
  109. MacToNetStack    record    0
  110. a2    ds.l    1
  111. pc    ds.l    1
  112. len    ds.l    1
  113. p    ds.l    1
  114. return    ds.l    1
  115.     endr
  116.  
  117. ; function MacToNet(p:ptr; len:longInt):longInt;
  118. MacToNet    proc    export
  119.     with    MacToNetStack
  120.  
  121. ; a0 = src ptr
  122. ; a1 = dest ptr
  123. ; a2 = mactoisotable
  124. ; d0 = src len
  125. ; d1 = dest len
  126. ; d2 = the byte
  127.  
  128.     move.l    a2,-(sp)
  129.  
  130. ; first find the final length of the block
  131.     move.l    len(sp),d0
  132.     move.l    p(sp),a0
  133.     move.l    d0,d1
  134. loop1
  135.     sub.l    #1,d0
  136.     bmi.s    fin1
  137.     cmp.b    #13,(a0)+
  138.     bne.s    loop1
  139.     addq.l    #1,d1
  140.     bra.s    loop1
  141. fin1
  142.  
  143.     move.l    len(sp),d0
  144.     move.l    p(sp),a0
  145.     lea    (a0,d1.l),a1
  146.     lea    (a0,d0.l),a0
  147.     lea    mactoisotable,a2
  148.     clr.w    d2
  149. loop2
  150.     sub.l    #1,d0
  151.     bmi.s    fin2
  152.     move.b    -(a0),d2
  153.     cmp.b    #13,d2
  154.     bne.s    over2
  155.     move.b    #10,-(a1)
  156. over2
  157.     move.b    (a2,d2.w),d2
  158.     move.b    d2,-(a1)
  159.     bra.s    loop2
  160. fin2
  161.     move.l    d1,return(sp)
  162.     move.l    (sp)+,a2
  163.     move.l    (sp),8(sp)
  164.     add.l    #8,sp
  165.     rts
  166.  
  167.     STRING    ASIS                ; The debugger string.
  168.     DC.B    $88,'MacToNet'
  169.     DC.W    $0000
  170.  
  171.     endp
  172.  
  173.     END
  174.  
  175. asm -wb "{active}"
  176.  
  177.  
  178. (evaluate "{active}" =~ /(?*):(?*)®1.a/ )> dev:null
  179. (evaluate "{active}" =~ "/(?*)®2.a/" )> dev:null
  180. link -sn CalcCRC="{®1}" "{active}.o" -o "{®2}"
  181. dumpcode "{®2}"
  182.